package com.ybkj.o2o.sales.manager;


import com.ybkj.o2o.sales.common.DataGrid;
import com.ybkj.o2o.sales.entity.CouponRule;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

public interface CouponRuleManager {
  /**
   * 创建优惠券.
   * @param title 标题
   * @param code 编码
   * @param start 开始时间
   * @param end 结束时间
   * @param companyId 公司id
   * @param type 优惠券规则类型
   * @param couponType 优惠券类型
   * @param couponTypeId 分类id
   * @param discount 打折
   * @param money 抵扣
   * @param number 优惠券数量
   * @param eachLimit 每人限领数量
   * @param appKey 系统key
   * @return CouponRule
   */
  CouponRule insert(String title, String code, Date start, Date end, Long companyId, Integer type,
      String couponType, Long couponTypeId, Double discount, BigDecimal money, Integer number, Integer eachLimit,
      String appKey);

  /**
   * 删除优惠券规则.
   * @param id 优惠券规则id
   * @param appKey 系统key
   */
  void delete(Long id, String appKey);

  /**
   * 修改优惠券规则.
   * @param id 优惠券规则id
   * @param appKey 系统key
   * @return Integer
   */
  int update(Long id, String appKey);

  /**
   * 查询单个优惠券规则.
   * @param id 优惠券规则id
   * @param appKey 系统key
   * @return CouponRule
   */
  CouponRule findByIdAndAppKey(Long id, String appKey);

  /**
   * 分页查询优惠券规则.
   * @param companyId 公司id
   * @param page 页数
   * @param rows 每页数量
   * @param appKey 系统key
   * @return DataGrid
   */
  DataGrid<CouponRule> queryAll(Long companyId, Integer page, Integer rows, String appKey);

  /**
   * 查询有效优惠券规则.
   * @param companyId 公司id
   * @param appKey 系统key
   * @return List
   */
  List<CouponRule> queryValid(Long companyId, String appKey);


}
